/*
 * Adaline.h
 *
 *  Created on: 09-may-2009
 *      Author: Luis
 */

#ifndef ADALINE_H_
#define ADALINE_H_
#include <iostream>
#include <fstream>
#include <math.h>

class Adaline {
public:
	Adaline();
	virtual ~Adaline();

	double fSigmoide(double p){
		return 1.0 / (1.0 + exp(-p));
	}
	double aleatorioA(double min, double max){
		double val =(double) ((double)RAND_MAX+(double)1)/((double)(max-min));
		return (double)(rand()/val) + min;
	}

	void inicializar(const char *filename);
	void cargarEntrada(const char *filename);
	double calcularActividad(int patron, int neurona);
	double calcularSalida(int patron, int neurona);
	double calcularError(int patron, int neurona);
	double actualizarPesos(int neurona, int dendrita);
	void asignarMemoria();
	void ejecutar();

private:
	double **patron;
	double **pesos;
	double **actividad;
	double error;
	double **salida;
	double *esperado;
	double **dW;
	double tasaAprendizaje;
	int cantNeuronas;
	int cantRasgosE;
	int cantRasgosS;
	int numIteraciones;
	int cantPatrones;
	bool tipoEntrenamiento;
	bool ini;
};

#endif /* ADALINE_H_ */
